import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import '../../lib_baseview/lib_baseview.dart';
import '../../lib_baseview/theme/jr.dart';
import '../../lib_baseview/utils/screen_utils.dart';
import '../../resource/language/generated/l10n.dart';
import 'conversation_controller.dart';

class ConversationPage extends StatefulWidget {
  final bool showInSheet;

  ConversationPage({this.showInSheet = false}) {
    Get.put(ConversationController(), permanent: true);
  }

  @override
  State<StatefulWidget> createState() => _ConversationPageState();

  static Future? show({bool showInSheet = false}) {
    return Get.to(() => ConversationPage(showInSheet: showInSheet),
        routeName: '/ConversationPage');
  }

  static Future bottomShow(BuildContext context) async {
    return showModalBottomSheet(
      isScrollControlled: true, //添加该属性解决无法按预定高度弹起问题
      shape: const RoundedRectangleBorder(
        borderRadius: BorderRadiusDirectional.only(
          topStart: Radius.circular(24),
          topEnd: Radius.circular(24),
        ),
      ),
      backgroundColor: Colors.white,
      context: context,
      builder: (context) {
        return ClipRRect(
          borderRadius: const BorderRadius.all(Radius.circular(24)),
          child: Container(
              height: (ScreenUtils.screenH(context)) * 0.7,
              padding: const EdgeInsetsDirectional.only(top: 16),
              child: ConversationPage(showInSheet: true)),
        );
      },
    );
  }
}

class _ConversationPageState extends State<ConversationPage> {
  late ConversationController conversationController;
  @override
  void initState() {
    super.initState();
    conversationController = Get.find<ConversationController>();
  }

  @override
  Widget build(BuildContext context) {
    return const AnnotatedRegion<SystemUiOverlayStyle>(
      value: SystemUiOverlayStyle.dark,
      child: Scaffold(
        backgroundColor: Colors.transparent,
        body: Text("ConversationPage"),
        // body: VisibilityDetector(
        //   key: const Key('.ConversationPage'),
        //   onVisibilityChanged: (VisibilityInfo info) {
        //     var visiblePercentage = info.visibleFraction * 100;
        //     if (visiblePercentage == 100) {
        //       _refreshConvUsers();
        //     }
        //     // conversationController.pageVisible = visiblePercentage > 90;
        //   },
        //   child: Column(
        //     mainAxisSize: MainAxisSize.max,
        //     children: [
        //       const SizedBox(height: 12),
        //       _topWidget(),
        //       // if (!widget.showInSheet) FriendPlayingListWidget(),
        //       // Expanded(
        //       //   child: GetBuilder<ConversationController>(builder: (logic) {
        //       //     if (logic.initLoading) {
        //       //       return ContentLoading(child: HomeMessageLoadingWidget());
        //       //     }

        //       //     if (logic.hasError) {
        //       //       return JREmptyView(
        //       //           errorType: ErrorType.noData,
        //       //           desc: logic.errorMsg ?? '',
        //       //           onTap: () {
        //       //             logic.initLoadData(force: true, reset: true);
        //       //           });
        //       //     }

        //       //     if (logic.conversations.isEmpty) {
        //       //       return Padding(
        //       //         padding: const EdgeInsetsDirectional.only(bottom: 140),
        //       //         child: JREmptyView(
        //       //             errorType: ErrorType.noMessage,
        //       //             onTap: () {
        //       //               logic.initLoadData(force: true, reset: true);
        //       //             }),
        //       //       );
        //       //     }
        //       //     return SafeArea(
        //       //       top: false,
        //       //       child: ShaderMask(
        //       //         shaderCallback: (Rect bounds) {
        //       //           return const LinearGradient(
        //       //             begin: Alignment.topCenter,
        //       //             end: Alignment.bottomCenter,
        //       //             colors: <Color>[
        //       //               Colors.black,
        //       //               Colors.transparent,
        //       //               Colors.transparent
        //       //             ],
        //       //             stops: [0.0, 0.05, 1.0],
        //       //           ).createShader(bounds);
        //       //         },
        //       //         blendMode: BlendMode.dstOut,
        //       //         child: ListView.builder(
        //       //           padding: const EdgeInsetsDirectional.only(top: 10),
        //       //           physics: const AlwaysScrollableScrollPhysics(
        //       //               parent: BouncingScrollPhysics()),
        //       //           itemBuilder: (c, index) {
        //       //             bool isLast = index == logic.conversations.length;
        //       //             if (isLast) {
        //       //               return SizedBox(height: 76);
        //       //             }
        //       //             ConversationWrapper item =
        //       //                 logic.conversations.values.elementAt(index);
        //       //             return ConversationItemWidget(
        //       //                 item: item,
        //       //                 onTap: () {
        //       //                   if (CusTomMessage.isFolderAccount(item.it.id)) {
        //       //                     ClassifyConversationPage.show(item.classify);
        //       //                   } else {
        //       //                     logic.markConvRead(item);
        //       //                     ChatNewPage.show(conversation: item);
        //       //                   }
        //       //                 },
        //       //                 onLongTap: () => _operateConvItem(item));
        //       //           },
        //       //           itemCount: logic.conversations.length + 1,
        //       //           itemExtent: 76,
        //       //         ),
        //       //       ),
        //       //     );
        //       //   }),
        //       // ),

        //       Text("聊天"),
        //     ],
        //   ),
        // ),
      ),
    );
  }

  Widget _topWidget() {
    return Container(
      padding: EdgeInsets.only(bottom: 7, left: 20),
      child: SafeArea(
          bottom: false,
          child: Row(
            mainAxisSize: MainAxisSize.max,
            children: [
              Text(
                T.current.message,
                style: TextStyle(
                    color: JR.color.mainText,
                    fontSize: 22,
                    fontWeight: FontWeight.w800),
              ),
              const Spacer(),
              CupertinoButton(
                  minSize: 0,
                  padding: EdgeInsets.zero,
                  onPressed: () {
                    // Navigator.of(context).push(CupertinoPageRoute(
                    //     builder: (context) => UserRelationScreen(
                    //           index: 0,
                    //           type: T.current!.friend,
                    //         )));
                  },
                  child: Padding(
                    padding: const EdgeInsets.only(left: 20, right: 10),
                    child: image(
                      "ic_personal.svg",
                      width: 20,
                      height: 20,
                      fit: BoxFit.contain,
                      color: JR.color.mainText,
                    ),
                  )),
              CupertinoButton(
                  minSize: 0,
                  padding: EdgeInsets.zero,
                  onPressed: () {
                    _showCreateMenu(context);
                  },
                  child: Padding(
                    padding: const EdgeInsets.only(left: 10, right: 20),
                    child: image(
                      "ic_add_friend.svg",
                      width: 20,
                      height: 20,
                      fit: BoxFit.contain,
                      color: JR.color.mainText,
                    ),
                  )),
            ],
          )),
    );
  }

// 下拉菜单
  _showCreateMenu(BuildContext context) {
    showDialog(
        context: context,
        barrierColor: Colors.transparent,
        builder: (_) {
          return Text('下拉菜单');
          // return Container(
          //   padding: EdgeInsetsDirectional.only(
          //       top: widget.showInSheet
          //           ? ScreenUtils.ins.screenHeight * 0.3 - 30
          //           : 0),
          //   child: AddIconMenu(
          //     inSheet: widget.showInSheet,
          //     onClickAddFriend: () {
          //       Navigator.of(context)
          //           .pushReplacement(CupertinoPageRoute(builder: (context) {
          //         return const IMAddFriend();
          //       }));
          //     },
          //     onClickCreateRoom: () {
          //       Navigator.of(context).pop();
          //       jumpMyRoomPage(context);
          //     },
          //   ),
          // );
        });
  }

  // _operateConvItem(ConversationWrapper item) async {
  //   if (!CusTomMessage.isOfficial(item.it.id)) {
  //     dynamic re = await RoomToolSheet.showBottomSheetWithItemsNoConfirm(
  //         context, [T.current!.delete], '');
  //     if (re is String && re == T.current!.delete && context.mounted) {
  //       dynamic sure = await JRDialog.showCommonDialog(
  //           context: context,
  //           data: TextWithHorizontalBtnDialogData(
  //             title: T.current!.tips,
  //             desc: T.current!.del_conv_tips,
  //           ),
  //           barrierDismissible: true);
  //       if (sure == true) {
  //         conversationController.removeItem(item);
  //       }
  //     }
  //   }
}

@override
void dispose() {
  // if (!widget.showInSheet) {
  //   Get.delete<ConversationController>(force: true);
  // }
  // super.dispose();
}

void _refreshConvUsers() {
  // // 不在私聊页
  // if (conversationController.currentChatConvId == null ||
  //     conversationController.currentChatConvId!.isEmpty) {
  //   conversationController.refreshUsers();
  // }
}
// }
